const ui = require('./ui');
const BASE_URL = 'http://localhost:8888'
// const BASE_URL = 'http://192.168.47.20:8888'

/**
 * 网络请求request
 * obj.data 请求接口需要传递的数据
 * obj.showLoading 控制是否显示加载Loading 默认为false不显示
 * obj.contentType 默认为 application/json
 * obj.method 请求的方法  默认为GET
 * obj.url 请求的接口路径 
 * obj.message 加载数据提示语
 */
function request(obj) {
  return new Promise(function (resolve, reject) {
    if (obj.showLoading) {
      ui.showLoading(obj.message ? obj.message : '加载中...');
    }
    var data = {};
    if (obj.data) {
      data = obj.data;
    }
    var contentType = 'application/json';
    if (obj.contentType) {
      contentType = obj.contentType;
    }

    var method = 'GET';
    if (obj.method) {
      method = obj.method;
    }

    wx.request({
      url: BASE_URL + obj.url,
      data: data,
      method: method,
      //添加请求头
      header: {
        'Content-Type': contentType,
        'Authorization': 'Bearer ' + wx.getStorageSync('token') //获取保存的token
      },
      //请求成功
      success: function (res) {
        console.log('===============================================================================================')
        console.log('==    接口地址：' + obj.url);
        console.log('==    接口参数：' + JSON.stringify(data));
        console.log('==    请求类型：' + method);
        console.log("==    接口状态：" + res.statusCode);
        console.log("==    接口数据：" + JSON.stringify(res.data));
        console.log('===============================================================================================')
        if (res.statusCode == 200) {
          resolve(res);
        } else if (res.statusCode == 401) {//授权失效
          reject("登录已过期");
          jumpToLogin(obj);//跳转到登录页
        } else {
          //请求失败
          reject("请求失败：" + res.statusCode)
        }
      },
      fail: function (err) {
        //服务器连接异常
        console.log('===============================================================================================')
        console.log('==    接口地址：' + url)
        console.log('==    接口参数：' + JSON.stringify(data))
        console.log('==    请求类型：' + method)
        console.log("==    服务器连接异常")
        console.log('===============================================================================================')
        reject("服务器连接异常，请检查网络再试");
      },
      complete: function () {
        ui.hideLoading();
      }
    })
  });
}


//跳转到登录页
function jumpToLogin(obj) {
  wx.login({
    success(res) {
      if (res.code) {
        //发送请求
        request({
          method: "POST",
          showLoading: true,
          url: `/api/auth/wx_login`,
          message: "正在登录...",
          data: { code: res.code },
        }).then(res => {
          if (res.data.code != 0) {
            ui.showToast(res.mes)
          } else {
            wx.setStorage({
              key: "token",
              data: res.data.data.access_token
            })
            getInfo()
            request(obj)
          }
        }).catch(err => {
          console.log(err)
        });
      } else {
        console.log('登录失败！' + res.errMsg)
      }
    }
  })
}

function getInfo() {
  var app = getApp()
  // 获取用户信息
  request({
    method: "POST",
    showLoading: true,
    url: `/api/auth/info`,
    message: "获取账号信息...",
  }).then(res => {
    // console.log(res)
    if (res.data.code != 0) {
      ui.showToast(res.data.mes)
    } else {
      app.globalData.isLogin = true,
        app.globalData.userInfo = res.data.data
    }
  }).catch(err => {
    console.log(err)
  });
}

module.exports = {
  request,
}

